package com.five.dao.impl.reception;

import com.five.dao.reception.ShowTypeDao;
import com.five.util.DBUtil;
import org.springframework.stereotype.Repository;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @Author: 王登峰
 * @Description:
 * @Date: 2020/11/26 16:33
 */
@Repository
public class ShowTypeDaoImpl implements ShowTypeDao {
    @Override
    public List<Map> selectType() {
        String sql ="select a.*,count(b.typeid) count from t_type a left join t_room b on a.id = b.typeid group by a.id having count(b.typeid)> 0";
        return DBUtil.queryMap(sql);
    }

    @Override
    public List getManDate(Integer typeid) {
        //获取离开的最大时间
        String sql="call pro_getmaxleaveDate("+typeid+",?)";
        return DBUtil.getCallOut(sql,"out");
    }

    @Override
    public void getNowAndMaxBetweenTime(String format, String s) {
        String sql="{call create_calendar('"+format+"','"+s+"')}";
        DBUtil.getCall(sql);
        //根据插入的时间查询当前的房间
        // return null;
    }

    @Override
    public List<Map> getAllDate() {
        String sql="select * from calendar_custom";
        return DBUtil.queryMap(sql);
    }

    @Override
    public Map getDateOrder(List<Map> mapList, Integer typeid) {

        //房间未满的 时间和剩余的房间数
        List<Map> mapsDate=new ArrayList<>();
        //房间已满的日期
        List manDate=new ArrayList();

        //获取该类型总的房间数
        String sql1="select count(*) a from t_room where `status`!=3 and typeid=?";
        List<Map> maps = DBUtil.queryMap(sql1, typeid);
        int count=Integer.parseInt(maps.get(0).get("a")+"");
        for (Map map : mapList) {
            String sql="{call create_getroomcount('"+map.get("date")+"',"+typeid+",?)}";
            List<String> out = DBUtil.getCallOut(sql, "out");
            //获取的map.get(date)的已经预定或者入住的房间数
//            System.out.println("Sehngyude fangjianshu ====="+out.get(0)+"====当时是"+map.get("date"));
            int s = Integer.parseInt(out.get(0));
            System.out.println("s==="+count);
            //用总的房间数减去s代表是空余的房间数
            int shengyu=count-s;
//            System.out.println("剩余的房间数是"+shengyu);
            //将时间   和剩余的房间数  存刀一个map里面
            if(shengyu>0){
                Map m=new HashMap();
                //将时间   和剩余的房间数
                m.put(map.get("date"),shengyu);
//                System.out.println("剩余的房间和日期"+m);
                mapsDate.add(m);
            }else{
                //房间已满
                manDate.add(map.get("date"));
                //System.out.println("房间已满");
            }
        }
        System.out.println(mapsDate);
        Map ma=new HashMap();
        ma.put("manDate",manDate);
        ma.put("srDate",mapsDate);
        return ma;
    }
}
